/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controladores;

import java.util.List;
import statusProduto.CadastroStatusProduto;
import statusProduto.RepositorioStatusProduto;
import statusProduto.StatusProduto;
import util.CamposObrigatoriosException;
import util.ErroAcessoRepositorioException;

/**
 *
 * @author Alberto
 */
public class ControladorStatusProduto {
    
    /**
     * Atributo do tipo RepositorioStatusProduto
     */
    private RepositorioStatusProduto objRepositorioStatusProduto = null;
    
    /**
     * Método construtor
     * 
     * @param RepositorioStatusProduto obRepositorioStatusProduto 
     */
    public ControladorStatusProduto(RepositorioStatusProduto obRepositorioStatusProduto){
        this.objRepositorioStatusProduto = obRepositorioStatusProduto;
    }
    
    /**
     * Método que ira cadastrar / atualizar os objetos StatusProduto da base
     * @param objStatusProduto 
     */
    public void cadastrar(StatusProduto objStatusProduto) throws ErroAcessoRepositorioException, CamposObrigatoriosException{
        // Iniciando os cadastros
        CadastroStatusProduto objCadastroStatusProduto = new CadastroStatusProduto(this.objRepositorioStatusProduto);
        
        // Casts
        boolean bolStatus = (boolean) objStatusProduto.getStatusProduto();
        
        // validações
        if(objStatusProduto.getDescricaoStatus().trim().length() == 0) throw new CamposObrigatoriosException("Decsrição Status Produto");
                
        // Setando os valores
        objStatusProduto.setStatusProduto(bolStatus);
        
        objCadastroStatusProduto.cadastrarAtualizar(objStatusProduto);
    }
    
    /**
     * Método que ira cadastrar / atualizar os objetos StatusProduto da base
     * @param objStatusProduto 
     */
    public void atualizar(StatusProduto objStatusProduto) throws ErroAcessoRepositorioException, CamposObrigatoriosException{
        // Iniciando os cadastros
        CadastroStatusProduto objCadastroStatusProduto = new CadastroStatusProduto(this.objRepositorioStatusProduto);
        
        // Casts
        boolean bolStatus = (boolean) objStatusProduto.getStatusProduto();
        int idStatusProduto = (int) objStatusProduto.getIdStatusProdutos();
        
        // validações
        if(objStatusProduto.getDescricaoStatus().trim().length() == 0) throw new CamposObrigatoriosException("Decsrição Status Produto");
        
        // Setando os valores
        objStatusProduto.setStatusProduto(bolStatus);
        objStatusProduto.setIdStatusProdutos(idStatusProduto);
                
        objCadastroStatusProduto.cadastrarAtualizar(objStatusProduto);
    }
    
    /**
     * Método que ira procurar na base o status do produto pelo seu identificador
     * 
     * @param idStatusProduto
     * @return StatusProduto
     */
    public StatusProduto procurar(int idStatusProduto) throws ErroAcessoRepositorioException, CamposObrigatoriosException{
        // Iniciando os cadastros
        CadastroStatusProduto objCadastroStatusProduto = new CadastroStatusProduto(this.objRepositorioStatusProduto);
        
        // Casts
        idStatusProduto = (int) idStatusProduto;
        
        // Validando o identificadoe
        if(idStatusProduto == 0) throw new CamposObrigatoriosException("Identificador do Status Produto");
        
        return objCadastroStatusProduto.procurar(idStatusProduto);
    }
    
    /**
     * Método que ira verificar a existencia de um determinado objeto na base
     * 
     * @param idStatusProduto
     * @return boolean
     */
    public boolean existe(int idStatusProduto) throws ErroAcessoRepositorioException, CamposObrigatoriosException{
        // Iniciando os cadastros
        CadastroStatusProduto objCadastroStatusProduto = new CadastroStatusProduto(this.objRepositorioStatusProduto);
        
        // Casts
        idStatusProduto = (int) idStatusProduto;
        
        // Validando o identificadoe
        if(idStatusProduto == 0) throw new CamposObrigatoriosException("Identificador do Status Produto");
        
        return objCadastroStatusProduto.existe(idStatusProduto);
    }
    
    /**
     * Método que ira listar os objetos da base por uma determinada condição ou não
     * @param strComplemento
     * @return List<StatusProduto>
     */
    public List<StatusProduto> listar(String strComplemento) throws ErroAcessoRepositorioException{
        // Iniciando os cadastros
        CadastroStatusProduto objCadastroStatusProduto = new CadastroStatusProduto(this.objRepositorioStatusProduto);
        
        return objCadastroStatusProduto.listar(strComplemento);
    }
    
    /**
     * Método que ira remover um objeto da base pelo seu identificador
     * 
     * @param idStatusProduto 
     */
    public void remover(int idStatusProduto) throws ErroAcessoRepositorioException, CamposObrigatoriosException{
        // Iniciando os cadastros
        CadastroStatusProduto objCadastroStatusProduto = new CadastroStatusProduto(this.objRepositorioStatusProduto);
        
        // Casts
        idStatusProduto = (int) idStatusProduto;
        
        // Validando o identificadoe
        if(idStatusProduto == 0) throw new CamposObrigatoriosException("Identificador do Status Produto");
        
        objCadastroStatusProduto.remover(idStatusProduto);
    }
}
